package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	/*// 创建Gin的默认引擎
	r := gin.Default()

	// 定义一个GET请求的处理器函数
	r.GET("/hello", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "Hello, Gin!",
			"hello":   "狗东西",
		})
	})

	// 定义一个GET请求的处理器函数
	r.GET("/test", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"miao": "Hello, Gin!",
		})
	})
	// get 传参
	r.GET("/send", func(ctx *gin.Context) {
		ctx.JSON(200, gin.H{
			"a": ctx.Query("a"),
			"b": ctx.Query("b"),
		})
	})
	// post form-data 传参
	r.POST("/send", func(ctx *gin.Context) {
		ctx.JSON(200, gin.H{
			"a": ctx.Query("a"),
			"b": ctx.PostForm("b"),
			"c": ctx.PostForm("c"),
		})
	})

	// post json 传参
	r.POST("/sendJson", func(ctx *gin.Context) {
		json := make(map[string]interface{}) //注意该结构接受的内容
		ctx.BindJSON(&json)
		ctx.JSON(200, gin.H{
			"a": ctx.Query("a"),
			"b": json["b"],
			"c": json["c"],
		})
	})

	// output: {"a":"1","b":"2"}

	// 调用方法
	r.POST("/login", func(ctx *gin.Context) {
		Login(ctx)
	})

	// 启动HTTP服务器，默认监听在本地的8080端口
	r.Run(":8888")*/

	router := gin.Default()
	router.LoadHTMLGlob("templates/**/*")
	router.GET("/posts/index", func(c *gin.Context) {
		c.HTML(http.StatusOK, "posts/index.tmpl", gin.H{
			"title": "Posts",
		})
	})
	router.GET("/users/index", func(c *gin.Context) {
		c.HTML(http.StatusOK, "users/index.tmpl", gin.H{
			"title": "Users",
		})
	})
	router.GET("/index", func(c *gin.Context) {
		c.HTML(http.StatusOK, "index.tmpl", gin.H{
			"title": "index",
		})
	})
	router.Run(":8080")
}

func Login(ctx *gin.Context) {
	//定义匿名结构体，字段与json字段对应
	var body struct {
		Email string `json:"email"`
		Name  string `json:"name"`
	}

	//绑定json和结构体
	if err := ctx.BindJSON(&body); err != nil {
		return
	}
	//获取json中的key,注意使用 . 访问
	email := body.Email
	name := body.Name

	ctx.JSON(200, gin.H{
		"a": ctx.Query("a"),
		"b": email,
		"c": name,
	})
}
